Repository navigation
feat: / Skill Invocation in Group Channels - #4259
Open
DoodleBears wants to merge 7 commits into
Open
DoodleBears wants to merge 7 commits into
DoodleBears wants to merge 7 commits into
Conversation
Load the catalog for Group Channels too and reload it when the bot roster changes. Issue: #4233 Agent-Task: claude-code/local/0d4a6a9f-6296-49dd-b14c-6789efa657c3 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Match owner display names and slugs between Skill name and description matches, and use the same ranking in skills-list. Preserve sent Skill snapshots in ordinary Group digests and pending context without changing routing. Cover owner-independent delivery, plain external IM text, and bare command precedence; document the Group verification journey. Issue: #4233 Agent-Task: codex/local/01a1e0df-afbe-7283-bd17-0b534bc78f98
…stays selectable Issue: #4233 Agent-Task: claude-code/local/b7955cb7-65c2-4b41-bafd-b18256e4a38b Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…group # Conflicts: # .agents/skills/verify-deepseekbot/features/skill-invocation.md # docs/bot-cli.md # docs/bot-cli.zh.md
Pass each Bot Skill's display name and slug to the shared ranking so typing a Bot name lists its Skills before description matches. Issue: #4233 Agent-Task: claude-code/local/b7955cb7-65c2-4b41-bafd-b18256e4a38b Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the
|
A Group message can carry another Bot's Skill, so the sent chip shows its owner the same way the composer chip and the / menu do. Issue: #4233 Agent-Task: claude-code/local/b7955cb7-65c2-4b41-bafd-b18256e4a38b Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
DoodleBears
marked this pull request as ready for review
November 15, 2026 21:18
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
#4233 | hub #4231 | stacked on #4252 | Agent tasks:
claude-code/local/b7955cb7-65c2-4b41-bafd-b18256e4a38b(UI, integration, review),codex/local/01a1e0df-afbe-7283-bd17-0b534bc78f98(ranking, routing, digests)Closes #4233
Why the change
S1 made
/Skill Invocation work in a Bot DM. A Group Channel holds several PersonaBots, so its/menu must list every member's Skills, let a Human find a Bot's Skills by its name, and keep routing driven by mentions only.Special things to note
mainafter feat: invoke a Bot's Skills from / in a Human DM #4252 merges soCloses #4233takes effect.skills-listranking, and the Group digest / pending-context text a Bot reads.bot:alice.<skill_invocation>snapshot too; before, a Bot woken by digest instead of a mention saw only/name./name. A unit test covers the outbound payload. The real-IM browser check (AC-4) needs the signed-in IM QA browser and is tracked in QA: Skill chip falls back to /name in Discord/Lark mirrors (Skills S2 AC-4) #4260.Change outline
/menu in a Group Channel: Before (S1 head), a Group's/offered only commands.After: commands, then Skills. Alice's
/qa-echoand Bob's/triage-bugscarry their avatars; each Host Skill is listed once.Bot name ranking:
/bobfinds Bob's Skill through its owner.Alice's Skill, addressed to Bob: the composer holds an
@Bobmention and Alice's/qa-echochip.Only Bob replies (real model, both wake policies mentions-only). The sent chip shows Alice's avatar.
Isolated Host, viewport 1440×900 cropped to the conversation pane, light theme, English, AX model from
ax-model.json. Canonical read (channelTimeline): the Human message storesskillInvocations[0]={name: qa-echo, owner: {kind: bot, botSlug: <Alice>}, path: <Alice memory>/.agents/skills/qa-echo/SKILL.md, content}with a single mention of Bob; the only Bot entry is Bob'sSKILL_QA_7731.channelSkillCatalogreturned both Project Skills and each Host Skill once.Ranking:
rankSkillEntries(entries, query, ownerNames?)gains a Bot-name tier: name prefix > name subsequence > owning Bot display name or slug > description. The composer passes each Bot Skill's display name and slug;skills-list --querydoes the same through thelistRPC, so CLI and menu agree.Group catalog: the Group composer loads
channelSkillCatalogand reloads when the Bot roster changes. Host Skills appear once; each Bot Skill row shows its Bot's avatar.Same name: a bare
/namethat matches a command still runs the command; the same-named Skill row stays selectable with the arrow keys.Tests:
packages/core/test/skill-invocation.test.ts(Group routing independence, digest snapshots, plain IM payload),packages/core/test/bot-live-cli.test.ts(CLI ranking),packages/client/test/skill-composer.test.ts(owner-name ranking, command precedence). Codex ran theci-planaffected suites (4,040 passed, 16 skipped) before integration;pnpm lintandtscare clean on the integrated head.🤖 Generated with Claude Code